Upload di un file.

Il trasferimento di file da una posizione ad un'altra prende il nome generico di upload. In PHP sembra molto semplice ma la procedura che consente questo tipo di trasferimento è in grado di mettere in difficoltà non poche persone; la si effettua in due parti: la prima consiste, naturalmente, nel creare il modulo HTML per l'upload dei file mentre la seconda consiste nella creazione dello script PHP per la gestione dello stesso.
Prima di cominciare è opportuno controllare alcuni valori contenuti nel file php.ini, contenuto nella cartella C:/WINDOWS, e verificare i valori delle variabili:

upload_temp_dir =

a cui assegnare il valore c:/windows/temp che definisce la directory temporanea in cui memorizzare i file da trasferire, e

upload_max_filesize=

a cui dare il valore di 2097152 il quale non è altro che lo spazio di memoria riservato per effettuare l'upload. Per trasferire file di dimensioni maggiori basta modificare questo valore.
Adesso analizziamo il procedimento in modo da poter scrivere il codice correttamente: per eseguire le operazione abbiamo bisogno di:

- un modulo HTML.

- un file da trasferire.

- una locazione dove riporre il file.

- uno script che effettui l'upload.

Il codice HTML che permette la visualizzazione del modulo per il trasferimento dei file è il seguente:

<HTML><HEAD><TITLE>Upload di un file</TITLE></HEAD>

<BODY>

    <FONT FACE="Arial" SIZE="4">Upload di un file.</FONT>

    <FORM METHOD="post" ACTION="upload.php" ENCTYPE="multipart/form-data">

       <P><B>File da trasferire:</B>&nbsp;<INPUT TYPE="file" NAME="img" SIZE="30">

      <P><INPUT TYPE="submit" NAME="Invio" VALUE="Effettua l'upload">

   </FORM>

 </BODY>
 </HTML>

Come potete vedere il modulo che permette di ottenere un campo di testo con pulsante Sfoglia, in modo da poter scegliere il file di cui effettuare l'upload, è il tipo file, quindi inserisco il tasto Invio che consente l'avvio dell'upload stesso. Adesso passiamo al codice che mi permetta di fare il tutto:
Salviamo il file con il nome di upload.htm e lo mettiamo nella directory radice, htdocs, del server; quindi passiamo alla compilazione dello script PHP che gestisca l'upload. Innanzitutto teniamo a mente che la variabile $img, generata dal modulo di tipo "file", genera automaticamente i seguenti attributi della variabile dopo ogni operazione di upload:

$img_name che contiene il nome e l'estensione del file trasferito (ad es. immagine.jpg).

$img_size che contiene le dimensioni del file da trasferire (in byte).

$img_type che contiene il tipo MIME del file da trasferire (nel nostro caso il tipo è image/jpg)

Adesso apriamo il Blocco Note e digitiamo il seguente codice:

<?
   if ($img_name != "")
    {
      @copy("$img", "/Programmi/Apache Group/Apache2/htdocs/$img_name")
          or die("Impossibile copiare il file");
    }
  else { die("Non è stato indicato alcun file da trasferire!"); }
?>
<html><head><title>Upload eseguito.</title></head>
<body>
   <font face="Arial" size="6">Upload riuscito.</font>
   <p><font face="Arial" size="3">Avete trasferito il file <b><? echo "$img_name"; ?></b>
    di <b><? echo "$img_size"; ?></b> byte ed è di tipo <b><? echo "$img_type"; ?></b>
</body>
</html>

Quindi anch'esso lo salviamo nella directory radice con il nome di upload.php e verifichiamo se tutte le nostre operazioni sono andate a buon fine. Avviamo il server e digitiamo sulla barra degli indirizzi http://localhost/upload.htm e premiamo il tasto Invio; ci apparirà il modulo di tipo testo con accanto il tasto Sfoglia. Lo premiamo e scegliamo il percorso fino a quando giungeremo al file da trasferire, a questo punto confermiamo e premiamo il tasto Effettua l'upload. Se tutto è stato eseguito come previsto ci apparirà il messaggio contenuto nel codice HTML dello script PHP.